package com.sky.mapper;

import com.github.pagehelper.Page;
import com.sky.annotation.AutoFill;
import com.sky.dto.EmployeePageQueryDTO;
import com.sky.entity.Employee;
import com.sky.enumeration.OperationType;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.time.LocalDateTime;

@Mapper
public interface EmployeeMapper {
	
	/**
	 * 根据用户名查询员工
	 *
	 * @param username
	 * @return
	 */
	@Select("select * from employee where username = #{username}")
	Employee getByUsername(String username);
	
	
	/**
	 * 新增员工数据
	 *
	 * @param employeeDTO
	 * @return
	 */
	@Insert("insert into employee(name, username, password, phone, sex, id_number,status, create_time, update_time," +
		"create_user,update_user) values (#{name},#{username},#{password},#{phone},#{sex},#{idNumber},#{status}," +
		"#{createTime}, #{updateTime},#{createUser}, #{updateUser})")
//	@AutoFill(OperationType.INSERT)
	void addEmployee(Employee employeeDTO);
	
	Page<Employee> getEmployees(EmployeePageQueryDTO employeePageQueryDTO);
	
	/**
	 * 禁用员工
	 */
	@AutoFill(OperationType.UPDATE)
	void putEmployee(Employee employee);
	
	/**
	 * 根据id 查询员工
	 *
	 * @param id
	 * @return
	 */
	@Select("select * from employee where id=#{id}")
	Employee getEmployeeId(Long id);
	
	/**
	 * 修改密码
	 *
	 * @param newPassword
	 */
	@Update("update employee set password=#{newPassword},update_time=#{updateTime},update_user=#{id} where id=#{id}")
	void putPassword(Long id, String newPassword, LocalDateTime updateTime);
}
